import { markRaw, reactive, ref, toRaw, onMounted, onBeforeMount } from 'vue'
import { useRouter, useRoute } from 'vue-router'
import { showDialog, showConfirmDialog, showLoadingToast, closeToast } from 'vant'
import { weixinAccessTokenApi, weixinRefreshTokenApi, weixinUserinfoApi, getWeixinTokenApi } from '@/apis'
import { useStore } from '@/store'
// 微信认证并且跳转到对应页面,如果后期页面复杂则不跳转到对应页面，把url参数对应的代码注释就行
export const useWeixinLogin = (url: any = '') => {
    const route = useRoute()
    const router = useRouter()
    const store = useStore()
    const appid: string = 'wx8c16179b5b100339' //测试号的唯一标识
    const secret: string = 'acd91a6cac2144fec8a1c684fae2b09e' //测试号的appsecret
    // const appid: string = 'wx148cbbd9b73a6ca0' //公众号的唯一标识
    // const secret: string = '6bb98d3ea9f2fb3ad1bef89d2d1939dd' //公众号的appsecret

    onBeforeMount(() => {
        console.log(123)
        if (!store.openid) {
            console.log(456)
            console.log(route)
            if (!route.query?.code) {
                // 微信环境用户同意授权，获取code
                // 第一步：用户同意授权，获取code
                // appid: 公众号的唯一标识
                // redirect_uri: 授权后重定向的回调链接地址， 请使用 urlEncode 对链接进行处理
                // response_type: 返回类型，请填写code
                // scope: 应用授权作用域，snsapi_base （不弹出授权页面，直接跳转，只能获取用户openid），snsapi_userinfo （弹出授权页面，可通过openid拿到昵称、性别、所在地。并且， 即使在未关注的情况下，只要用户授权，也能获取其信息 ）
                // state: 重定向后会带上state参数，开发者可以填写a - zA - Z0 - 9的参数值，最多128字节
                // #wechat_redirect: 无论直接打开还是做页面302重定向时候，必须带此参数
                // forcePopup: 强制此次授权需要用户弹窗确认；默认为false；需要注意的是，若用户命中了特殊场景下的静默授权逻辑，则此参数不生效 http://192.168.1.114:3015/lygYjsWeixin/
                location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + appid + '&redirect_uri=' + encodeURIComponent('http://192.168.1.114:3036/lsWeixin/') + '&response_type=code&scope=snsapi_userinfo&state='+ url +'#wechat_redirect'
                // location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + appid + '&redirect_uri=' + encodeURIComponent('http://fxygm.tianxunwang.com/lsWeixin/') + '&response_type=code&scope=snsapi_userinfo&state='+ url +'#wechat_redirect'
            } else {
                wxlogin(route.query?.state)
            }
        }
    })
    const wxlogin = async (redirectUrl) => {
        showLoadingToast({
            message: '加载中...',
            forbidClick: true,
            duration: 0
        })
        try {
            // 微信获取到code
            let res1 = await weixinAccessTokenApi({
                appid: appid,
                secret: secret,
                code: route.query.code,
                grant_type: 'authorization_code'
            })
			console.log(res1)
            
            //刷新access_token（如果需要）
            // let res2 = await weixinRefreshTokenApi({
            //     appid: appid,
            //     grant_type: 'refresh_token',
            //     refresh_token: res1.refresh_token,
            // })
            // 拉取用户信息
            let res3 = await weixinUserinfoApi({
                access_token: res1.access_token,
                openid: res1.openid,
                lang: 'zh_CN',
            })
            // 在首页先获取company,dw，token;然后token放入到每个请求的header里
            let res4 = await getWeixinTokenApi({
                sCode: 'fxygm',
                // openid: res1.openid
                openid: 1
            })
            console.log(res4)

            store.openid = res1.openid
            store.headimgurl = res1.headimgurl //头像
            store.nickname = res1.nickname //昵称

            store.token = res4.token
            store.company = res4.company
            store.dw = res4.dw

            console.log(redirectUrl)
            router.replace(redirectUrl)
        } catch (err) {
            showDialog({
                title: '提示',
                message: '网络异常，请稍后重试！',
            }).then(() => {
                window.close()
            })
        } finally {
			closeToast()
		}
    }
	
}